--- %%NOBANNER%% -->
/*------------------<--- Start of Description -->--------------------\ | Power for one mean; | |--------------------<--- End of Description -->---------------------| |--------------------------------------------------------------------| |--------------<--- Start of Files or Arguments Needed -->-----------| | Arguments: | | - Required: | | n1 = sample size | | std = standard deviation | | y1 = true mean under null hypothesis | | min_y2 = smallest possible alternative hypothesis mean | | | | - Optional: | | max_y2 = largest possible alternative hypothesis mean | | inc_y2 = increment value for range of y2 | | alpha = type 1 error, e.g. .01 or .05, default=.05 | | sides = 1 or 2 for 1 or 2 sided test, default=2 | | plot = 'P' for line printer plot of power vs y2 | | 'G' for SAS/GRAPH plot of power vs y2 | | unit = units for mean, e.g. mg, lbs., cm, etc. | | Output: Power for null hypothesis mean of y1 vs alternative | | hypothesis means ranging from min_y2 to max_y2 | |---------------<--- End of Files or Arguments Needed -->------------| |--------------------------------------------------------------------| |----------------<--- Start of Example and Usage -->-----------------| | Example: %mn1_pr(alpha=.05,sides=2,n1=102,std=1,y1=0, min_y2=0.2); | | Usage: %mn1_pr(ALPHA=.05,SIDES=2,N1=.,Y1=.,MIN_Y2=., | | MAX_Y2=.,INC_Y2=.,STD=.,PLOT= , UNIT=); | | Reference: Bergstralh, EJ. SAS macros for sample size and power | | calculations. Proceedings of the 9th annual SAS Users | | Group International Conference. | | Equation #4. | \-------------------<--- End of Example and Usage -->---------------*/ %MACRO mn1_pr(ALPHA=.05,SIDES=2,N1=.,Y1=.,MIN_Y2=., MAX_Y2=.,INC_Y2=.,STD=.,PLOT= , UNIT=); /*--------------------------------------------\ | Author: Michael Riggs and Eric Bergstralh;| | Created: November 16, 1992; | | Modified: January 9, 1998; | | Purpose: Power for One means; | \--------------------------------------------*/ OPTIONS MISSING=' ' NOCENTER; %LET PLOT=%UPCASE(&PLOT); DATA T1; ALPHA=&ALPHA; SIDES=&SIDES; Y1=&Y1; MIN_Y2=&MIN_Y2; MAX_Y2=&MAX_Y2; INC_Y2=&INC_Y2; N1=&N1; STD=&STD; ZALPHA=(PROBIT(1-ALPHA))*(SIDES=1) + (PROBIT(1-ALPHA/2))*(SIDES=2); IF MAX_Y2=. THEN DO; MAX_Y2=MIN_Y2+1; INC_Y2=MIN_Y2+2; *NEED 1 EXEC OF DO; END; TY1=Y1; TSTD=STD; TN1=N1; df=tn1-1; tn1=int( tn1*(df+1)/(df+3) ); *reduce N for t-test 1/9/98; DO Y2=MIN_Y2 TO MAX_Y2 BY INC_Y2; ZBETA=(SQRT(TN1)*ABS(Y2-TY1)-ZALPHA*TSTD)/TSTD; POWER=PROBNORM(ZBETA); OUTPUT; END; LABEL Y1="Null hyp.*Mean* (&unit)" Y2="Alt. hyp.*Mean* (&unit)"; SIDES='1 VS. 2*TAILED*TEST'; FOOTNOTE1 ' '; PROC PRINT SPLIT='*'; ID Y1; var Y2 POWER; TITLE3 "POWER ESTIMATES FOR COMPARING ONE MEAN TO A CONSTANT"; TITLE4 "Alpha=&alpha, Sides=&sides, STD=&std, N1=&n1, Null hypothesis: mean=&y1"; %IF "&MAX_Y2" NE "" %THEN %DO; %IF &PLOT= P %THEN %DO; PROC PLOT NOLEGEND; PLOT POWER*Y2/ VAXIS=0 TO 1.0 BY .10 ; LABEL Y2="Alt. hyp. mean(&unit)"; %END; %ELSE %IF &PLOT= G %THEN %DO; PROC GPLOT ; PLOT POWER*Y2; SYMBOL1 Font= V=none I=j l=1; LABEL Y2="Alt. hyp. mean(&unit)"; run; %END; RUN; %END; %MEND MN1_PR;